/**
 *
 */
package cn.com.header.core.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 功能描述:有关时间的操作
 *
 * @author lhd
 */
public class DateUtil {

	/**
	 * <p>
	 * 取得当前日期，并将其转换成格式为"dateFormat"的字符串 例子：假如当前日期是 2003-09-24 9:19:10，则：
	 *
	 * <pre>
	 *  getCurrDateStr(&quot;yyyyMMdd&quot;)=&quot;20030924&quot;
	 *  getCurrDateStr(&quot;yyyy-MM-dd&quot;)=&quot;2003-09-24&quot;
	 *  getCurrDateStr(&quot;yyyy-MM-dd HH:mm:ss&quot;)=&quot;2003-09-24 09:19:10&quot;
	 * </pre>
	 *
	 * </p>
	 *
	 * @param dateFormat
	 *            String 日期格式字符串
	 * @return String
	 */
	public static String getCurrDateStr(String dateFormat) {
		return convertDateToStr(new Date(), dateFormat);
	}

	/**
	 * 将日期类型转换成指定格式的日期字符串
	 *
	 * @param date
	 *            待转换的日期
	 * @param dateFormat
	 *            日期格式字符串
	 * @return
	 */
	public static String convertDateToStr(Date date, String dateFormat) {
		if (date == null) {
			return null;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
		return sdf.format(date);
	}

	/**
	 * 将指定格式的字符串转换成日期类型
	 *
	 * @param dateStr
	 *            待转换的日期字符串
	 * @param dateFormat
	 *            日期格式字符串
	 * @return
	 */
	public static Date convertStrToDate(String dateStr, String dateFormat) {
		if (dateStr == null || dateStr.equals("")) {
			return null;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
		try {
			return sdf.parse(dateStr);
		} catch (Exception e) {
			throw new RuntimeException("DateUtil.convertStrToDate():"
					+ e.getMessage());
		}
	}


	/**
	 * 将指定的字符串转换成日期
	 *
	 * @param dateStr
	 *            : 待转换的日期符串,以yyyy-MM-dd模板进行转换
	 * @return 返回标准的日期格式yyyy-MM-dd,与字符串dateStr对应的date对象
	 * @throws ParseException
	 */
	public static Date parseStrToDate(String dateStr) throws ParseException {
		try {
			SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
			return sf.parse(dateStr);
		} catch (ParseException e) {
			throw e;
		}
	}

	/**
	 * 按照不同的格式模板将指定的字符串转换成日期。
	 *
	 * @param date
	 *            : 待转换的日期符串
	 * @param pattern
	 *            : 字符串的格式模板,例如:yyyy-MM-dd HH:mm:ss
	 * @return 与字符串dateStr对应的date对象
	 * @throws ParseException
	 */
	public static Date parseStrToDate(String date, String pattern) throws ParseException {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(pattern);
			return sdf.parse(date);
		} catch (ParseException e) {
			throw e;
		}
	}

	/**
	 * 获得当前日期
	 *
	 * @return Date实例
	 */
	public static Date getCurrentDate() {
		// return new Date(System.currentTimeMillis());
		Calendar cal = Calendar.getInstance();
		return cal.getTime();
	}

	/**
	 * 获得当前系统的时间戳
	 *
	 * @return 从1970-1-1到现在的毫秒数
	 */
	public static long getCurrentTimeMillis() {
		return System.currentTimeMillis();
	}

}
